package org.taskexecution.taskexecution.infrastructure.po.scheduledTask;

/**
 * @author Lydond
 * @description: 任务执行日志 实体类
 * @create_date: 2025/10/20-15:10
 */

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import java.time.LocalDateTime;

/**
 * 3.任务执行日志表
 */
@Data
@TableName("task_execution_log")
public class TaskExecutionLog {

    /**
     * 日志ID
     */
    @TableId(value = "log_id", type = IdType.AUTO)
    private Long logId;

    /**
     * 关联的调度ID
     */
    @TableField("schedule_id")
    private Long scheduleId;

    /**
     * 关联的任务定义ID (冗余字段，方便查询)
     */
    @TableField("task_def_id")
    private Long taskDefId;

    /**
     * 实际开始执行时间
     */
    @TableField("start_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime startTime;

    /**
     * 执行结束时间
     */
    @TableField("end_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime endTime;

    /**
     * 执行耗时 (毫秒)
     */
    @TableField("duration_ms")
    private Integer durationMs;

    /**
     * 是否成功 (1: 成功, 0: 失败)
     */
    @TableField("is_success")
    private Integer isSuccess;

    /**
     * 成功后返回的参数 (JSON字符串)
     */
    @TableField("result_data")
    private String resultData;

    /**
     * 失败时的错误信息/堆栈
     */
    @TableField("error_message")
    private String errorMessage;

    /**
     * 当前是第几次重试
     */
    @TableField("retry_count")
    private Integer retryCount;

    /**
     * 执行机器地址
     */
    @TableField("executor_address")
    private String executorAddress;

    /**
     * 日志创建时间
     */
    @TableField(value = "created_at", fill = FieldFill.INSERT)
    private LocalDateTime createdAt;
}